/**
 * @author
 * @createtime
 * @class ContractForm
 * @extends Ext.Window
 * @description Contract表单
 */
ContractForm = Ext.extend(Ext.Window, {
	//内嵌FormPanel
	formPanel : null,
	//构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		//必须先初始化组件
		this.initUIComponents();
		ContractForm.superclass.constructor.call(this, {
			id : 'ContractFormWin',
			layout : 'fit',
			items : this.formPanel,
			modal : true,
			height : 400,
			width : 700,
			maximizable : true,
			title : '[内部合同评审]详细信息',
			buttonAlign : 'center',
			buttons : this.buttons
		});
	},//end of the constructor
	//初始化组件
	initUIComponents : function() {
		this.formPanel = new Ext.FormPanel({
			layout : 'form',
			trackResetOnLoad : true,
			bodyStyle : 'padding:10px 10px 10px 10px',
			border : false,
			url : __ctxPath + '/project/saveContract.do',
			id : 'ContractForm',
			defaults : {
				anchor : '98%,98%'
			},
			defaultType : 'textfield',
			items : [{
						name : 'contract.id',
						id : 'id',
						xtype : 'hidden',
						value : this.id == null ? '' : this.id
					}, {
						name : 'contract.type',
						id : 'type',
						xtype : 'hidden',
						value : 1
					}, {
						xtype : 'container',
						layout : 'column',
						height : 25,
						defaults : {
							xtype : 'label',
							style : {
								margin : '0px 0px 3px 0px'
							}
						},
						items : [{
									text : '项目名称：',
									columnWidth : .15
								}, {
									xtype : 'textfield',
									name : 'contractProName',
									id : 'contractProName',
									columnWidth : .3,
									allowBlank : false,
									emptyText : '请选择项目',
									listeners : {
										'focus' : function() {
											ProjectSelector.getView(function(proId, proName, proNo) {
												Ext.getCmp("contract.project.id").setValue(proId);
												Ext.getCmp("contractProName").setValue(proName);
											}, true).show();
										}
									}
								}, {
									xtype : "hidden",
									name : "contract.project.id",
									id : "contract.project.id"
								}, {
									text : '分类：',
									style : 'margin-left:10px;',
									columnWidth : .15
								}, {
									xtype : 'combo',
									hiddenName : 'contract.category',
									id : 'category',
									triggerAction : 'all',
									editable : false,
									allowBlank : false,
									mode : 'local',
									store : ['劳务', '材料', '双包', '其他'],
									columnWidth : .3
								}]
					}, {
						xtype : 'container',
						layout : 'column',
						height : 25,
						defaults : {
							xtype : 'label',
							style : {
								margin : '0px 0px 3px 0px'
							}
						},
						items : [{
									text : '合同内容：',
									columnWidth : .15
								}, {
									xtype : 'textfield',
									name : 'contract.content',
									id : 'content',
									allowBlank : false,
									maxLength : 64,
									columnWidth : .3
								}, {
									text : '合同编号：',
									style : 'margin-left:10px;',
									columnWidth : .15
								}, {
									xtype : 'textfield',
									name : 'contract.contractNo',
									id : 'contractNo',
									columnWidth : .3,
									maxLength : 64,
									allowBlank : false
								}]
					}, {
						xtype : 'container',
						layout : 'column',
						height : 25,
						defaults : {
							xtype : 'label',
							style : {
								margin : '0px 0px 3px 0px'
							}
						},
						items : [{
									text : '乙方单位：',
									columnWidth : .15
								}, {
									xtype : 'textfield',
									name : 'contract.suppliersAssess.suppliersName',
									id : 'contract.suppliersAssess.suppliersName',
									allowBlank : false,
									maxLength : 64,
									columnWidth : .3,
									listeners:{
										focus:function(){
											new SuppliersAssessSelector(function(suppliersId,suppliersName){
														if(!Ext.isEmpty(suppliersId)){
															Ext.getCmp('contract.suppliersAssess.suppliersId').setValue(suppliersId);
															Ext.getCmp('contract.suppliersAssess.suppliersName').setValue(suppliersName);
															var url = __ctxPath + '/customer/getSuppliersAssess.do'
															var params = "suppliersId="+suppliersId;
															var data = ajaxSyncCall(url,params).data;
															Ext.getCmp('suppliersLevel').setValue(data.supplierLevel);
														}
													},true).show();
										}
									}
								}, {
									xtype : 'hidden',
									name:'contract.suppliersAssess.suppliersId',
									id:'contract.suppliersAssess.suppliersId'
								}, {
									text : '属性：',
									style : 'margin-left:10px;',
									columnWidth : .15
								}, {
									xtype : 'combo',
									hiddenName : 'contract.property',
									id : 'property',
									triggerAction : 'all',
									editable : false,
									allowBlank : false,
									mode : 'local',
									store : ['招标', '比价', '市场价'],
									columnWidth : .3
								}]
					}, {
						xtype : 'container',
						layout : 'column',
						height : 25,
						defaults : {
							xtype : 'label',
							style : {
								margin : '0px 0px 3px 0px'
							}
						},
						items : [{
									text : '供应商级别：',
									columnWidth : .15
								}, {
									xtype : 'combo',
									hiddenName : 'contract.suppliersLevel',
									id : 'suppliersLevel',
									triggerAction : 'all',
									editable : false,
									allowBlank : false,
									mode : 'local',
									store : ['A级', 'B级', 'C级'],
									columnWidth : .3
								}, {
									text : '合同版本：',
									style : 'margin-left:10px;',
									columnWidth : .15
								}, {
									xtype : 'combo',
									hiddenName : 'contract.contractVersion',
									id : 'contractVersion',
									triggerAction : 'all',
									editable : false,
									allowBlank : false,
									mode : 'local',
									store : ['标准', '非标准'],
									columnWidth : .3
								}]
					}, {
						xtype : 'fieldset',
						title : '合同要点',
						width : '80%',
						items : [{
									xtype : 'container',
									layout : 'column',
									height : 25,
									defaults : {
										xtype : 'label',
										style : {
											margin : '0px 0px 3px 0px'
										}
									},
									items : [{
												text : '合同形式：',
												columnWidth : .15
											}, {
												xtype : 'combo',
												hiddenName : 'contract.contractForm',
												id : 'contractForm',
												triggerAction : 'all',
												editable : false,
												allowBlank : false,
												mode : 'local',
												store : ['固定单价', '固定总价','其他'],
												columnWidth : .3
											}, {
												text : '合同价款(元)：',
												style : 'margin-left:10px;',
												columnWidth : .15
											}, {
												xtype : 'numberfield',
												name : 'contract.contractAmount',
												id : 'contractAmount',
												allowBlank : false,
												columnWidth : .3,
												maxLength : 9
											}]
								}, {
									xtype : 'container',
									layout : 'column',
									height : 25,
									defaults : {
										xtype : 'label',
										style : {
											margin : '0px 0px 3px 0px'
										}
									},
									items : [{
												text : '付款方式：',
												columnWidth : .15
											}, {
												xtype : 'textfield',
												name : 'contract.payType',
												id : 'payType',
												allowBlank : false,
												columnWidth : .75,
												maxLength : 64
											}]
								}, {
									xtype : 'container',
									layout : 'column',
									height : 25,
									defaults : {
										xtype : 'label',
										style : {
											margin : '0px 0px 3px 0px'
										}
									},
									items : [{
												text : '质量、安全、进度约定：',
												columnWidth : .25
											}, {
												xtype : 'textfield',
												name : 'contract.appointment',
												id : 'appointment',
												allowBlank : false,
												columnWidth : .65,
												maxLength : 64
											}]
								}, {
									xtype : 'container',
									layout : 'column',
									height : 25,
									defaults : {
										xtype : 'label',
										style : {
											margin : '0px 0px 3px 0px'
										}
									},
									items : [{
												text : '合同数量：',
												columnWidth : .15
											}, {
												text : '原件共：',
												style : 'margin-left:20px;'
											}, {
												xtype : 'numberfield',
												name : 'contract.originalCopyNum',
												id : 'originalCopyNum',
												allowBlank : false,
												columnWidth : .15,
												maxLength : 8
											}, {
												text : '份,返回对方'
											}, {
												xtype : 'numberfield',
												name : 'contract.giveCopyNum',
												id : 'giveCopyNum',
												allowBlank : false,
												columnWidth : .15,
												maxLength : 8
											}, {
												text : '份'
											}]
								}, {
									xtype : 'container',
									autoHeight : true,
									layout : 'column',
									autoWidth : true,
									defaultType : 'label',
									style : 'padding-left:0px;padding-bottom:5px;',
									items : [{
												text : '附件:',
												columnWidth : .15,
												style : "margin-top:15px;"
											}, {
												xtype : 'hidden',
												name : 'contract.attachIds',
												id : 'contract.attachIds'
											}, {
												xtype : 'hidden',
												name : 'contract.attachFiles',
												id : 'contract.attachFiles'
											}, {
												xtype : 'panel',
												id : 'contract.displayAttach',
												columnWidth : .75,
												height : 65,
												frame : false,
												autoScroll : true,
												style : 'padding-left:10px;padding-top:0px;',
												html : ''
											}, {
												xtype : 'button',
												iconCls : 'btn-upload',
												text : '上传',
												handler : function() {
													var dialog = App.createUploadDialog({
														file_cat : 'flow/contract',
														callback : function(data) {
															Ext.getCmp('contract.displayAttach').body.update('');
															Ext.getCmp("contract.attachFiles").setValue('');
															Ext.getCmp('contract.attachIds').setValue('');
															var attachFiles = Ext.getCmp("contract.attachFiles");
															var fileIds = Ext.getCmp('contract.attachIds');
															var display = Ext.getCmp('contract.displayAttach');
															for (var i = 0; i < data.length; i++) {
																if (fileIds.getValue() != '') {
																	fileIds.setValue(fileIds.getValue() + ',');
																	attachFiles.setValue(attachFiles.getValue() + ',');
																}
																attachFiles.setValue(attachFiles.getValue() + data[i].filepath + ":"
																+ data[i].filename.replace(/\s+/g, ""));
																fileIds.setValue(fileIds.getValue() + data[i].fileId);
																Ext.DomHelper.append(display.body, '<span><a href="#" onclick="FileAttachDetail.show('
																+ data[i].fileId + ')">' + data[i].filename.replace(/\s+/g, "") + '</a>&nbsp;|&nbsp;</span>');
															}
														},
														permitted_max_size : 1024 * 1024 * 20
													});
													dialog.show(this);
												}
											}]
								}]
					}]
		});
		//加载表单对应的数据	
		this.initData();
		//初始化功能按钮
		this.buttons = [{
					text : '保存',
					iconCls : 'btn-save',
					handler : this.save.createCallback(this.formPanel, this)
				}, {
					text : '重置',
					iconCls : 'btn-reset',
					handler : this.reset.createCallback(this.formPanel)
				}, {
					text : '取消',
					iconCls : 'btn-cancel',
					handler : this.cancel.createCallback(this)
				}];
	},//end of the initcomponents
	/**
	 * 初始化数据
	 * 
	 * @param {}
	 *            formPanel
	 */
	initData : function() {
		//加载表单对应的数据	
		if (this.id != null && this.id != 'undefined') {
			this.formPanel.getForm().load({
				deferredRender : false,
				url : __ctxPath + '/project/getContract.do?id=' + this.id,
				waitMsg : '正在载入数据...',
				success : function(form, action) {
					var jsonData = Ext.util.JSON.decode(action.response.responseText);
					var res = jsonData.data;
					if (!Ext.isEmpty(res.project)) {
						Ext.getCmp("contractProName").setValue(res.project.proName);
						Ext.getCmp("contractProName").originalValue = res.project.proName;
						Ext.getCmp("contract.project.id").setValue(res.project.id);
						Ext.getCmp("contract.project.id").originalValue = res.project.id;
					}
					if (!Ext.isEmpty(res.suppliersAssess)) {
						Ext.getCmp("contract.suppliersAssess.suppliersName").setValue(res.suppliersAssess.suppliersName);
						Ext.getCmp("contract.suppliersAssess.suppliersName").originalValue = res.suppliersAssess.suppliersName;
						Ext.getCmp("contract.suppliersAssess.suppliersId").setValue(res.suppliersAssess.suppliersId);
						Ext.getCmp("contract.suppliersAssess.suppliersId").originalValue = res.suppliersAssess.suppliersId;
					}
					var attachId = res.attachIds;
					var attachFile = res.attachFiles;
					if (attachId != null && attachId != 'undefined' && attachFile != null && attachFile != 'undefined') {
						Ext.getCmp("contract.attachIds").setValue(res.attachIds);
						Ext.getCmp("contract.attachIds").originalValue = res.attachIds;
						Ext.getCmp("contract.attachFiles").setValue(res.attachFiles);
						Ext.getCmp("contract.attachFiles").originalValue = res.attachFiles;
						if (!Ext.isEmpty(attachId)) {
							var ids = attachId.split(',');
							var files = attachFile.split(',');
							for (var i = 0; i < ids.length; i++) {
								Ext.DomHelper.append(Ext.getCmp('contract.displayAttach').body, '<span><a href="#" onclick="FileAttachDetail.show(' + ids[i]
								+ ')">' + files[i].replace(/\s+/g, "").split(':')[1] + '</a>&nbsp;|&nbsp;</span>');
							}
						}
					}
				},
				failure : function(form, action) {
				}
			});
		}
	},
	/**
	 * 重置
	 * 
	 * @param {}
	 *            formPanel
	 */
	reset : function(formPanel) {
		formPanel.getForm().reset();
	},
	/**
	 * 取消
	 * 
	 * @param {}
	 *            window
	 */
	cancel : function(window) {
		window.close();
	},
	/**
	 * 保存记录
	 */
	save : function(formPanel, window) {
		if (formPanel.getForm().isValid()) {
			formPanel.getForm().submit({
				method : 'POST',
				waitMsg : '正在提交数据...',
				success : function(fp, action) {
					Ext.ux.Toast.msg('操作信息', '成功保存信息！');
					var gridPanel = Ext.getCmp('ContractGrid');
					if (gridPanel != null) {
						gridPanel.getStore().reload();
					}
					window.close();
				},
				failure : function(fp, action) {
					Ext.MessageBox.show({
						title : '操作信息',
						msg : '信息保存出错，请联系管理员！',
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR
					});
					window.close();
				}
			});
		}
	}//end of save

});